Technological advances have made it possible to make very small data processing systems, and to make them very inexpensively. In addition, many such data processing systems are capable of communicating with each other and with other, more expensive data processing systems. Consequently, it has become possible to embed (or attach, or otherwise link) data processing systems with many different kinds of physical objects, thereby allowing for centralized monitoring and management of those physical objects.
As currently defined by the online encyclopedia known by the trademark WIKIPEDIA, the “Internet of Things (IoT)” is a “network of physical objects or ‘things’ embedded with electronics, software, sensors, and network connectivity, which enables these objects to collect and exchange data. The [IoT] allows objects to be sensed and controlled remotely across existing network infrastructure, creating opportunities for more direct integration between the physical world and computer-based systems, and resulting in improved efficiency, accuracy and economic benefit. Each thing is uniquely identifiable through its embedded computing system but is able to interoperate within the existing Internet infrastructure . . . . ‘Things,’ in the IoT sense, can refer to a wide variety of devices such as heart monitoring implants, biochip transponders on farm animals, electric clams in coastal waters, automobiles with built-in sensors, . . . field operation devices that assist firefighters in search and rescue operations[,] smart thermostat systems and washer/dryers that use Wi-Fi for remote monitoring.”
For purposes of this disclosure, a data processing systems that is embedded or otherwise linked with a “thing” to be managed or monitored may be referred to as a field node. Field nodes within the IoT typically have very limited amounts of storage, and limited communications bandwidth. Field nodes may also have very limited power budgets. Consequently, it can be difficult to securely upgrade the software in those field nodes.
As described in greater detail below, the present disclosure introduces methods for efficiently and securely updating software in field nodes and other data processing systems, as well as apparatus to practice those methods.